home *** CD-ROM | disk | FTP | other *** search
- *---------------------------------------------------------------------------*
- KInt_Init ;VBR Assumed $0
- *---------------------------------------------------------------------------*
- Move.l #KInt_Main,$68.w Install Interrupt
- And.b #$3f,$bfe201 Set Timers
- Move.b #$7f,$bfed01
- Move.b $bfed01,d0
- Move.b #$88,$bfed01
- *---------------------------------------------------------------------------*
- Lea KInt_States(pc),a0 Map Of Key States (Up/Down)
- Clr.l (a0)+ Clear It (All Up)
- Clr.l (a0)+
- Clr.l (a0)+
- Clr.l (a0)+
- *---------------------------------------------------------------------------*
- St.b KInt_CCode
- Move.b #$a0,$bfee01 Start Timey Thing
- Rts And return
- *---------------------------------------------------------------------------*
- KInt_Main
- *---------------------------------------------------------------------------*
- Movem.l d0/d1/a0/a1/a6,-(a7) Stack everything
- Move.w #8,$dff09a Temp Disable Int.
- Move.w $dff01e,d0 Intreqr
- And.w #8,d0 Mask Out All X^ K_Int
- Beq KInt_End Not Keyboard Interrupt
- *---------------------------------------------------------------------------*
- Lea $bfed01,a6
- Move.w #$8,$dff09c Clear Int.Request
- Move.b -$100(a6),d0 Move Raw Keyboard value
- Ror.b #1,d0 Roll to correct
- Not.b d0
- Move.b d0,KInt_CCode Save Corrected Keycode
- *---------------------------------------------------------------------------*
- .HandShake Move.b #8,(a6)
- Move.b #7,-$900(a6)
- Move.b #0,-$800(a6)
- Move.b #0,-$100(a6)
- Move.b #$d1,$100(a6)
- Tst.b (a6)
- .wait Btst #0,(a6)
- Beq.s .wait
- Move.b #$a0,$100(a6)
- Move.b (a6),d0
- Move.b #$88,(a6)
- *---------------------------------------------------------------------------*
- Lea KInt_2Ascii(pc),a0
- Lea KInt_KeyMap(pc),a1
- Lea KInt_States(pc),a6
- Moveq.w #0,d0
- Move.b KInt_CCode(pc),d0
- Bmi.s KInt_KeyUp neg if up
- *---------------------------------------------------------------------------*
- KInt_KeyDown
- *---------------------------------------------------------------------------*
- Move.w #$f00,$dff180 **Temp ColFlash
- Move.b (a0,d0.w),KInt_Askey Ascii Value On Down Press
- Moveq.w #7,d1
- And.w d0,d1
- Lsr.w #3,d0
- Not.w d1
- Btst.b d1,(a1,d0.w) Keymap Wether Key Included?
- Bne.s KInt_End
- Bset.b d1,(a6,d0.w)
- Bra KInt_End
- *---------------------------------------------------------------------------*
- KInt_KeyUp
- *---------------------------------------------------------------------------*
- Move.w #$0f0,$dff180 **Temp ColFlash
- And.w #$7f,d0 Make code Positive
- Moveq.w #7,d1
- And.w d0,d1
- Lsr.w #3,d0
- Not.w d1
- Btst.b d1,(a1,d0.w)
- Bne.s KInt_End
- Bclr.b d1,(a6,d0.w) If Key up Set Corr. State
- KInt_End Movem.l (a7)+,d0/d1/a0/a1/a6 Unstack Everything
- Move.w #$8008,$dff09a Re-enable Int.
- Rte
- *---------------------------------------------------------------------------*
- KInt_CCode Ds.b 1
- KInt_Askey Ds.b 1
- KInt_OCode Ds.w 1
-
- KInt_States Ds.b 16 On/Off States Of Keys Bitwise
- KInt_KeyMap Ds.b 16 Bitwise To Include In Any Processing
- KInt_2Ascii ;Change KeyCode To Ascii
- Dc.b " ` "," 1 "," 2 "," 3 "
- dc.b " 4 "," 5 "," 6 "," 7 "
- dc.b " 8 "," 9 "
- Dc.b " 0 "," - "," + "," \ "
- dc.b ' ',' '," q "," w "
- dc.b " e "," r "
- Dc.b " t "," y "," u "," i "
- dc.b " o "," p "," [ "," ] "
- dc.b ' ',' '
- Dc.b ' ',' '," a "," s "
- dc.b " d "," f "," g "," h "
- dc.b " j "," k "
- Dc.b " l "," ; "," ' ",' '
- dc.b ' ',' ',' ',' '
- dc.b ' '," z "
- Dc.b " x "," c "," v "," b "
- dc.b " n "," m "," , "," . "
- dc.b " / ",' '
- Dc.b ' ',' ',' ',' '
- dc.b " ",' ',' ',' '
- dc.b ' ',' '
-
- Dc.b ' ',' ',' ',' '
- dc.b 'SPC ','<-- ','TAB ',' '
- dc.b 'RTN ','ESC '
- Dc.b 'DEL ',' ',' ',' '
- dc.b ' ',' ','[[[ ',']]] '
- dc.b '{{{ ','}}} '
- Dc.b 'FK1 ','FK2 ','FK3 ','FK4 '
- dc.b 'FK5 ','FK6 ','FK7 ','FK8 '
- dc.b 'FK9 ','FK0 '
- Dc.b ' ',' ',' ',' '
- dc.b 'HLP ','LSH ','RSH ',' '
- dc.b 'CPL ','CTL '
- Dc.b 'LAL ','RAL ','LAM ','RAM '
- dc.b ' ',' ',' ',' '
- dc.b ' ',' '
- Dc.b ' ',' ',' ',' '
- dc.b ' ',' ',' ',' '
- dc.b ' ',' '
-
-
-